home *** CD-ROM | disk | FTP | other *** search
/ CD Actual Thematic 25: Programming / pc_actual_25.iso / Delphi / Duck Report / _SETUP.1 / CPreview.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1998-08-13  |  5.6 KB  |  227 lines

  1. unit CPreview;
  2. interface
  3.  
  4. uses
  5.     {$IFDEF WIN32}
  6.         Windows,
  7.     {$ELSE}
  8.         WinTypes, WinProcs,
  9.     {$ENDIF}
  10.   Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  11.     Buttons, ExtCtrls, DRBase, DREng, StdCtrls;
  12.  
  13. type
  14.   TFormPreview = class(TForm)
  15.     PToolBar: TPanel;
  16.     SBFirst: TSpeedButton;
  17.     SBPrevious: TSpeedButton;
  18.     SBNext: TSpeedButton;
  19.     SBLast: TSpeedButton;
  20.     SBZoomIn: TSpeedButton;
  21.     SBZoomOut: TSpeedButton;
  22.     LPage: TPanel;
  23.     BBPrint: TSpeedButton;
  24.     BBClose: TSpeedButton;
  25.     PrintDlg: TPrintDialog;
  26.     DRView: TDRView;
  27.     CBZoom: TComboBox;
  28.     DuckReport: TDuckReport;
  29.     procedure SBFirstClick(Sender: TObject);
  30.     procedure SBPreviousClick(Sender: TObject);
  31.     procedure SBNextClick(Sender: TObject);
  32.     procedure SBLastClick(Sender: TObject);
  33.     procedure SBZoomOutClick(Sender: TObject);
  34.     procedure SBZoomInClick(Sender: TObject);
  35.     procedure BBCloseClick(Sender: TObject);
  36.     procedure BBPrintClick(Sender: TObject);
  37.     procedure DRViewPageChange(Sender: TObject);
  38.     procedure DRViewZoomChange(Sender: TObject);
  39.     procedure FormClose(Sender: TObject; var Action: TCloseAction);
  40.     procedure FormCreate(Sender: TObject);
  41.     procedure FormDestroy(Sender: TObject);
  42.     procedure CBZoomClick(Sender: TObject);
  43.     procedure DRViewGetZoom(Sender: TObject; var iZoom: Integer;
  44.       bZoomIn: Boolean);
  45.   private
  46.       Function    GetZoom (StZoom: String): Integer;
  47.   public
  48.       Procedure    PaintPage;
  49.   end;
  50.  
  51. var
  52.     FormPreview: TFormPreview;
  53.  
  54. implementation
  55.  
  56. {uses Main;}
  57.  
  58. {$R *.DFM}
  59. Procedure TFormPreview.FormCreate(Sender: TObject);
  60. Begin
  61. //    asd
  62. End;
  63. Procedure TFormPreview.FormDestroy(Sender: TObject);
  64. Begin
  65.     FormPreview    := nil;
  66. End;
  67. Procedure TFormPreview.FormClose(Sender: TObject;
  68.   var Action: TCloseAction);
  69. Begin
  70.     DuckReport.Terminated    := TRUE;
  71.     Action    := caFree;
  72. End;
  73. Procedure TFormPreview.SBFirstClick(Sender: TObject);
  74. Begin
  75.     if DRView.PageIndex <= 1 Then Exit;
  76.     DRView.PageIndex    := 1;
  77. End;
  78. Procedure TFormPreview.SBPreviousClick(Sender: TObject);
  79. Begin
  80.     if DRView.PageIndex <= 1 Then Exit;
  81.   DRView.PageIndex    := DRView.PageIndex - 1;
  82. End;
  83. Procedure TFormPreview.SBNextClick(Sender: TObject);
  84. Begin
  85.     if DRView.PageIndex >= DRView.PageCount Then Exit;
  86.     DRView.PageIndex    := DRView.PageIndex + 1;
  87. End;
  88. Procedure TFormPreview.SBLastClick(Sender: TObject);
  89. Begin
  90.     if DRView.PageIndex >= DRView.PageCount Then Exit;
  91.     DRView.PageIndex    := DRView.PageCount;
  92. End;
  93. Function TFormPreview.GetZoom (StZoom: String): Integer;
  94. Var
  95.     St:        String;
  96.   i:            Integer;
  97.   iCode:    Integer;
  98. Begin
  99.     St    := StZoom;
  100.   Trim (St);
  101.   i    := 1;
  102.   While TRUE Do
  103.   Begin
  104.         if i > Length (st) Then Break;
  105.       if not (St[i] in ['0'..'9']) Then
  106.          Delete (St, i, 1)
  107.      Else
  108.          Inc (i);
  109.   End;
  110.     Val (St, Result, iCode);
  111.     if iCode <> 0 Then
  112.       Result    := 0;
  113. End;
  114. Procedure TFormPreview.CBZoomClick(Sender: TObject);
  115. Var
  116.     iZoom:    Integer;
  117. Begin
  118.     iZoom    := GetZoom (CBZoom.Text);
  119.     if iZoom <= 0 Then Exit;
  120.   DRView.Zoom    := iZoom;
  121. End;
  122. Procedure TFormPreview.DRViewGetZoom(Sender: TObject;
  123.   var iZoom: Integer; bZoomIn: Boolean);
  124. Var
  125.   St:        String;
  126.   iIndex:    Integer;
  127. Begin
  128.   St        := IntToStr (iZoom) + '%';
  129.     iIndex    := CBZoom.Items.IndexOf (St);
  130.     if iIndex < 0 Then Exit;
  131.   if bZoomIn Then
  132.         Inc (iIndex)
  133.   Else
  134.       Dec (iIndex);
  135.   if iIndex < 0 Then Exit;
  136.     St        := CBZoom.Items[iIndex];
  137.     iZoom    := GetZoom (St);
  138.   if iZoom <= 0 Then
  139.       DRView.Zoom    := iZoom;
  140. End;
  141. Procedure TFormPreview.SBZoomOutClick(Sender: TObject);
  142. Begin
  143.     DRView.ZoomOut;
  144. End;
  145. Procedure TFormPreview.SBZoomInClick(Sender: TObject);
  146. Begin
  147.     DRView.ZoomIn;
  148. End;
  149. Procedure TFormPreview.DRViewZoomChange(Sender: TObject);
  150. Var
  151.   St:        String;
  152.   iTemp:    Integer;
  153.   Procedure    SetZoomStatus (bZoomOut, bZoomIn: Boolean);
  154.   Begin
  155.       SBZoomOut.Enabled    := bZoomOut;
  156.      SBZoomIn.Enabled    := bZoomIn; 
  157.   End;
  158. Begin
  159.     iTemp    := DRView.Zoom;
  160.   St        := IntToStr (iTemp) + '%';
  161.     iTemp    := CBZoom.Items.IndexOf (St);
  162.   if iTemp < 0 Then Exit;
  163.   CBZoom.ItemIndex    := iTemp;
  164.   if iTemp = 0 Then
  165.       SetZoomStatus (FALSE, TRUE)
  166.   Else
  167.       if iTemp = CBZoom.Items.Count - 1  Then
  168.           SetZoomStatus (TRUE, FALSE)
  169.      Else
  170.          SetZoomStatus (TRUE, TRUE);
  171. End;
  172. Procedure TFormPreview.PaintPage;
  173.     Procedure    SetPrintButton (bFist, bPre, bNext, bLast: Boolean);
  174.   Begin
  175.       SBFirst.Enabled        := bFist;
  176.      SBPrevious.Enabled    := bPre;
  177.      SBNext.Enabled            := bNext;
  178.      SBLast.Enabled            := bLast;
  179.   End;
  180. Begin
  181.   With DRView Do
  182.     Begin
  183.         LPage.Caption    := IntToStr (PageIndex) + ' in ' +
  184.             IntToStr (PageCount);
  185.      if PageCount <= 1 Then
  186.          SetPrintButton (FALSE, FALSE, FALSE, FALSE)
  187.      Else
  188.          if PageIndex <= 1 Then
  189.             SetPrintButton (FALSE, FALSE, TRUE, TRUE)
  190.         Else
  191.             if PageIndex >= PageCount Then
  192.                SetPrintButton (TRUE, TRUE, FALSE, FALSE)
  193.            Else
  194.                SetPrintButton (TRUE, TRUE, TRUE, TRUE);
  195.   End;
  196.   if DRView.PageCount <= 0 Then
  197.   Begin
  198.       SBZoomOut.Enabled    := FALSE;
  199.       SBZoomIn.Enabled    := FALSE;
  200.   End
  201.     Else
  202.   Begin
  203.       SBZoomOut.Enabled    := TRUE;
  204.       SBZoomIn.Enabled    := TRUE;
  205.   End;
  206. End;
  207. Procedure TFormPreview.BBCloseClick(Sender: TObject);
  208. Begin
  209.     Close;
  210. End;
  211. procedure TFormPreview.DRViewPageChange(Sender: TObject);
  212. begin
  213.     PaintPage;
  214. end;
  215. Procedure TFormPreview.BBPrintClick(Sender: TObject);
  216. Begin
  217.     PrintDlg.MinPage    := 1;
  218.     PrintDlg.MaxPage    := DRView.PageCount;
  219.     PrintDlg.FromPage    := 1;
  220.     PrintDlg.ToPage    := DRView.PageCount;
  221.     if not PrintDlg.Execute Then Exit;
  222.     DuckReport.PrintCustom (PrintDlg.FromPage, PrintDlg.ToPage,
  223.          PrintDlg.Copies, PrintDlg.Collate);
  224. End;
  225.  
  226. End.
  227.